# -*- coding: iso-8859-1 -*-
# file Node.py
# author Rocco Martino
#
############################################################################
#    Copyright (C) 2015 by Rocco Martino                                   #
#    martinorocco@gmail.com                                                #
#                                                                          #
#    This program is free software; you can redistribute it and/or modify  #
#    it under the terms of the GNU Lesser General Public License as        #
#    published by the Free Software Foundation; either version 2.1 of the  #
#    License, or (at your option) any later version.                       #
#                                                                          #
#    This program is distributed in the hope that it will be useful,       #
#    but WITHOUT ANY WARRANTY; without even the implied warranty of        #
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         #
#    GNU Lesser General Public License for more details.                   #
#                                                                          #
#    You should have received a copy of the GNU Lesser General Public      #
#    License along with this program; if not, write to the                 #
#    Free Software Foundation, Inc.,                                       #
#    59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             #
############################################################################

############################################################################
from . import Object
############################################################################




############################################################################
# ........................................................................ #
# ........................................................................ #
############################################################################




############################################################################
# ........................................................................ #
class Node(Object.Object):





############################################################################
    UpdateCallbacks = None
    EventCallbacks = None
############################################################################









############################################################################
    def __init__(self, obj, data):
        super(Node, self).__init__(obj, data)

        self.ClassName = "osg::Node"

        self.UpdateCallbacks = []
        self.EventCallbacks = []
############################################################################




############################################################################
    def writeData(self, writer):
        super(Node, self).writeData(writer)


        if len( self.UpdateCallbacks ) > 0:

            writer.moveIn("UpdateCallback TRUE")

            self.writeNestedCallback(writer, self.UpdateCallbacks, 0)

            writer.moveOut("UpdateCallback TRUE")




        if len( self.EventCallbacks ) > 0:

            writer.moveIn("EventCallback TRUE")

            self.writeNestedCallback(writer, self.EventCallbacks, 0)

            writer.moveOut("EventCallback TRUE")




        writer.writeLine("NodeMask 0xFFFFFFFF")
############################################################################




############################################################################
    def writeNestedCallback(self, writer, array, idx):


        tmp = array[idx]

        writer.moveIn(tmp[0])



        writer.writeLine( "UniqueID %d" % self.Data.UniqueID.generate() )



        if idx + 1 < len(array):

            writer.moveIn("NestedCallback TRUE")

            self.writeNestedCallback(writer, array, idx+1)

            writer.moveOut("NestedCallback TRUE")



        if tmp[1]:
            for l in tmp[1]:
                writer.writeLine(l)


        writer.moveOut(tmp[0])
############################################################################




############################################################################
    def addUpdateCallback(self, class_name, lines = None):

        self.UpdateCallbacks.append( (class_name, lines) )
############################################################################




############################################################################
    def addEventCallback(self, class_name, lines = None):

        self.EventCallbacks.append( (class_name, lines) )
############################################################################




# ........................................................................ #
############################################################################
